package com.janetfilter.core.attach;

/**
 * 虚拟机描述符类
 * 用于保存Java虚拟机(JVM)的相关信息
 * 主要用于Attach模式中列出和选择目标JVM
 */
public class VMDescriptor {
    // 进程ID
    private String id;
    // 主类名
    private String className;
    // 启动参数
    private String args;
    // 是否为旧版本JVM
    private Boolean old = true;

    /**
     * 创建虚拟机描述符实例
     * 
     * @param id 进程ID
     * @param className 主类名
     * @param args 启动参数
     */
    public VMDescriptor(String id, String className, String args) {
        this.id = id;
        this.className = className;
        this.args = args;
    }

    /**
     * 获取进程ID
     * 
     * @return 进程ID
     */
    public String getId() {
        return id;
    }

    /**
     * 设置进程ID
     * 
     * @param id 进程ID
     */
    public void setId(String id) {
        this.id = id;
    }

    /**
     * 获取主类名
     * 
     * @return 主类名
     */
    public String getClassName() {
        return className;
    }

    /**
     * 设置主类名
     * 
     * @param className 主类名
     */
    public void setClassName(String className) {
        this.className = className;
    }

    /**
     * 获取启动参数
     * 
     * @return 启动参数
     */
    public String getArgs() {
        return args;
    }

    /**
     * 设置启动参数
     * 
     * @param args 启动参数
     */
    public void setArgs(String args) {
        this.args = args;
    }

    /**
     * 检查是否为旧版本JVM
     * 
     * @return 如果是旧版本JVM则返回true
     */
    public Boolean getOld() {
        return old;
    }

    /**
     * 设置是否为旧版本JVM
     * 
     * @param old 是否为旧版本JVM
     */
    public void setOld(Boolean old) {
        this.old = old;
    }

    /**
     * 返回虚拟机描述符的字符串表示
     * 
     * @return 格式为"进程ID 主类名"的字符串
     */
    @Override
    public String toString() {
        return id + " " + className;
    }
}
